if event.postback.data[0] == "簽" and event.postback.data[1] == '到':
tz = timezone(timedelta(hours=+8))
now=datetime.now(tz).isoformat()
# now = (datetime.datetime.now()).isoformat() #獲取當下時間
today = str(now)[:19]
uid=event.source.user_id
user=User_Info.objects.get(uid=uid)
user.date=today
user.date_day1=today
user.save()
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text="簽到完畢\n"+"簽到時間為:"+today)
)
當按下簽到按鈕時,會先讀取使用者的uid,並且去找資料庫中該使用者是否有註冊過帳號,如果沒有的話會報錯,有的話就會找到該使用者的date欄位儲存當前的時間,最後告訴使用者簽到完畢以及簽到的時間為何。
在 Python 常用日期處理 -- 內建模組 datetime 探討了 Python 如何使用 datetime, 如果是一個跨時區的應用(Web 應用都是),就不能只儲存一個時間而不帶時區,如此,全球使用者將會看到一個相同的時間字串,白天黑夜就錯亂了。比說使用者資訊的更新時間儲存為 2020-07-07 13:46:08, 上海的使用者和芝加哥的使用者看到的是同一個時間字串,實質上卻相差好多個小時。
Python 內建元件不能像 Java 的 ZoneId.of("Asia/Shanghai") 直接以時區名獲得 Zone,而需要知道與標準時區的偏移,如上海是東八區,在 Python 中要用 timezone(timedelta(hours=+8))
今天的歌曲是 周杰倫-龍戰騎士 Dragon Rider
https://www.youtube.com/watch?v=6VRioN8euIs&list=PLFl6Na2uUoOZBEhBtQ_jeGA4P1V20JvpW&index=15&ab_channel=%E5%91%A8%E6%9D%B0%E5%80%ABJayChou